{
    type equals<T, U> = T extends U ? ( U extends T ? true : false) : false;


    type flag1 = equals<'C', 'C'>;
    type flag2 = equals<['c','k',0,1], ['c','k',0,1]>;
    type flag3 = equals<['c','k',0,{ name: string }], ['c','k',0,{ name: string }]>;
    type flag4 = equals<{name: string, age: 18}, {name: string, age: 18}>
}